// Pawn.h
//
// Created By: Jeremy Butler
// Created On: 21-Mar-2011
//
// A Pawn chess piece

#ifndef PAWN_H
#define PAWN_H

#include "Piece.h"
using namespace std;

class Pawn : public Piece{
public:
  //! @brief No-Arg constructor
  Pawn();

  //! @brief Constructor
  //! @param color the color to initialize this piece as.
  //! @param row the row that the Pawn should be initialized to.
  //! @param col the column that the Pawn should be initialized to.
  Pawn(const Color _color);

  //! @brief Copy constructor
  //! @param other The Pawn to be copied
  Pawn(const Pawn & other);

  //! @brief Destructor
  virtual ~Pawn();

  // Begin inherited virtual functions
  virtual set<Location> GetValidMoves(const Board & board, int row, int col, bool AllMoves) const;

  virtual Pawn* Clone() const;

  virtual string ToString() const;
  // End inherited virtual functions

  //! @brief Method for testing
  //! @param os a reference to the output stream where to print results.
  //! @return true if tests succeeded. False otherwise.
  static bool Test(ostream & os);
};

#endif /* PAWN_H */
